class Solution {
public:
  // 利用哈希判断是否出现循环
    bool isHappy(int n) {
        if(1 == n) return true;
        unordered_set<long long> hash;
        long long sum = n;
        // 如果find没有找到重复
        while(hash.find(sum) == hash.end()){
            hash.insert(sum);
            // 计算平方和更新sum
            sum = 0;
            while(n > 0){
                long long temp = n % 10;
                sum += temp*temp;
                n /= 10;
            }
            if(1 == sum) return true;
            n = sum;
        }
        return false;
    }
};